static Texture *
create_texture (GskGLDriver *driver,
- int width,
- int height)
+ float fwidth,
+ float fheight)
{
guint texture_id;
Texture *t;
+ int width = ceilf (fwidth);
+ int height = ceilf (fheight);
if (width >= driver->max_texture_size ||
height >= driver->max_texture_size)
if (t->min_filter == min_filter && t->mag_filter == mag_filter)
return t->texture_id;
}
-
+
t = create_texture (driver, gdk_texture_get_width (texture), gdk_texture_get_height (texture));
if (gdk_texture_set_render_data (texture, driver, t, gsk_gl_driver_release_texture))
int
gsk_gl_driver_create_texture (GskGLDriver *driver,
- int width,
- int height)
+ float width,
+ float height)
{
Texture *t;
g_array_append_val (t->fbos, f);
- g_assert (glCheckFramebufferStatus (GL_FRAMEBUFFER) == GL_FRAMEBUFFER_COMPLETE);
-
+ g_assert_cmpint (glCheckFramebufferStatus (GL_FRAMEBUFFER), ==, GL_FRAMEBUFFER_COMPLETE);
glBindFramebuffer (GL_FRAMEBUFFER, driver->default_fbo.fbo_id);
return fbo_id;
int min_filter,
int mag_filter);
int gsk_gl_driver_create_texture (GskGLDriver *driver,
- int width,
- int height);
+ float width,
+ float height);
int gsk_gl_driver_create_vao_for_quad (GskGLDriver *driver,
int position_id,
int uv_id,
cairo_t *cr;
surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,
- item.size.width * self->scale_factor,
- item.size.height * self->scale_factor);
+ ceilf (item.size.width) * self->scale_factor,
+ ceilf (item.size.height) * self->scale_factor);
cairo_surface_set_device_scale (surface, self->scale_factor, self->scale_factor);
cr = cairo_create (surface);